/*
菜品模块
 */
const foodDao = require('../dao/FoodDao');
/*
在routes目录中建立一个统一的webRouters.js
然后通过此webRouters.js完成所有的模块加载：
const foodController = require('./controller/FoodController');
router.post('/addFood', foodController.loginData);                            // 增
router.post('/deleteFood', foodController.loginData);                         // 删
router.post('/updateFood', foodController.loginData);                         // 改
router.post('/selectFood', foodController.loginData);                         // 查
 */

function ff() {
    console.log('预留公共函数');
}

module.exports = {
    async addFood(req,resp){        // 新增菜品
        // 读取上传的图片信息
        var files = req.files;
        console.log(req);

        // 设置返回结果
        var result = {};
        if(!files[0]) {
            result.code = 1;
            result.errMsg = '上传失败';
        } else {
            result.code = 0;
            result.data = {
                url: files[0].path
            };
            result.errMsg = '上传成功';
        }
        console.log(result);

        // 插入注册数据
        console.log('FoodController username=' + req.body.username);
        console.log('FoodController path=' + files[0].path);
        // 注意上传图片的地址，因为默认设置的是public路径，在实际服务器展示时，需要去掉public路径，所以存入数据库时通过files[0].path.substring(7)保存
        let resultData = await foodDao.insertFood(req.body.food_name, 1, req.body.food_price, req.body.food_type, files[0].path.substring(7), new Date());
        // 下面的路径是linux专用路径，因为linux的路径问题和windows不一样,可以查看webRouters.js中cb(null, './public/uploads');的位置
        // let resultData = await foodDao.insertFood(req.body.food_name, 1, req.body.food_price, req.body.food_type, files[0].path.substring(10), new Date());
        // console.log('FoodController 数据库返回信息如下:');
        // console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'新增菜品成功'};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    },
    async selectAllFood(req,resp){                          // 查询所有菜品
        let resultData = await foodDao.selectAllFood();
        console.log('FoodController 数据库返回信息如下:');
        console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'查询所有数据成功', data:resultData.data};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    },
    async selectFoodById(req,resp){                          // 基于主键id查询一条记录
        let resultData = await foodDao.selectFoodById(req.body.id);
        console.log('FoodController 数据库返回信息如下:');
        console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'查询所有数据成功', data:resultData.data};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    },
    async selectFoodByLimit(req,resp){                          // 基于页码进行分页处理
        let page = req.body.page;                               // 获取页码
        let startIndex = (page - 1) * 10;                       // 计算起始显示下标， 默认每页显示10条

        let resultData = await foodDao.selectFoodByLimit(startIndex);
        console.log('FoodController 数据库返回信息如下:');
        console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'查询所有数据成功', data:resultData.data};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    },
    async selectFoodCount(req,resp){                          // 根据用户传递模糊菜品名称进行统计个数
        let resultData = await foodDao.selectFoodCount(req.query.food_name);
        console.log('FoodController 数据库返回信息如下:');
        console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'查询所有数据成功', count:resultData.data[0]['count(*)']};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    },
    async updateFoodById(req,resp){                          // 基于主键id 更新 一条记录
        let resultData = await foodDao.updateFoodById(req.body.food_name, req.body.food_action, req.body.food_price, req.body.food_type, req.body.food_img, req.body.id);
        console.log('FoodController 数据库返回信息如下:');
        console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'更新数据成功'};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    },
    async deleteFoodById(req,resp){                          // 基于主键id 删除 一条记录
        let resultData = await foodDao.deleteFoodById(req.body.id);
        console.log('FoodController 数据库返回信息如下:');
        console.log(resultData);
        let json = {};
        // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
        if(resultData.code === 500)
            json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
        else
            json = {code:200, msg:'删除数据成功'};
        console.log(json);
        // 响应给前台页面
        resp.send(json);
    }
};